// 登录页面逻辑
const app = getApp();
const wxLogin = require('../../utils/wxLogin');
const agreementConfig = require('../../utils/agreement-config');

Page({
  data: {
    loading: false,
    errorMsg: '',
    hasAcceptedConsent: false
  },
  
  onLoad() {
    // 检查是否已登录，已登录则跳转到首页
    if (app.globalData.isLoggedIn) {
      this.redirectAfterLogin();
    }
    
    // 预加载配置，确保跳转后能快速加载
    this.loadAgreementConfig();
  },
  
  /**
   * 加载协议配置
   */
  loadAgreementConfig() {
    // 提前载入配置信息到缓存中
    wx.setStorage({
      key: 'userAgreement',
      data: agreementConfig.userAgreement
    });
    
    wx.setStorage({
      key: 'privacyPolicy',
      data: agreementConfig.privacyPolicy
    });
  },
  
  /**
   * 切换协议同意状态
   */
  toggleAgreement() {
    this.setData({
      hasAcceptedConsent: !this.data.hasAcceptedConsent,
      errorMsg: ''
    });
  },
  
  /**
   * 跳转到用户协议页面
   */
  navigateToUserAgreement() {
    wx.navigateTo({
      url: '/pages/agreement/user-agreement',
      fail: (err) => {
        console.error('跳转失败', err);
      }
    });
  },
  
  /**
   * 跳转到隐私政策页面
   */
  navigateToPrivacyPolicy() {
    wx.navigateTo({
      url: '/pages/agreement/privacy-policy',
      fail: (err) => {
        console.error('跳转失败', err);
      }
    });
  },
  
  /**
   * 微信登录
   */
  async handleWxLogin() {
    // 检查用户是否已同意用户协议
    if (!this.data.hasAcceptedConsent) {
      this.setData({
        errorMsg: '请先阅读并同意用户协议和隐私政策'
      });
      return;
    }
    
    // 显示加载状态
    this.setData({
      loading: true,
      errorMsg: ''
    });
    
    try {
      // 使用登录工具获取登录参数
      const loginParams = await wxLogin.wxLoginFlow();
      
      // 调用后端登录接口
      await this.loginWithCode(loginParams.code, loginParams.encryptedData, loginParams.iv);
    } catch (error) {
      console.error('微信登录失败', error);
      this.setData({
        loading: false,
        errorMsg: error.message || '微信登录失败，请重试'
      });
    }
  },
  
  /**
   * 使用code登录
   * @param {string} code - 微信登录临时凭证
   * @param {string} encryptedData - 加密数据（可选）
   * @param {string} iv - 加密向量（可选）
   */
  async loginWithCode(code, encryptedData, iv) {
    try {
      // 调用app中的登录方法
      const loginResult = await app.login(code, encryptedData, iv);
      
      // 登录成功，重置加载状态
      this.setData({
        loading: false
      });
      
      // 检查是否为新用户
      const isNewUser = loginResult?.isNewUser || false;
      
      // 登录成功提示
      wx.showToast({
        title: isNewUser ? '注册成功' : '登录成功',
        icon: 'success',
        duration: 800
      });
      
      // 设置用户首页为默认首页
      wx.setStorageSync('defaultTabPage', '/pages/profile/profile');
      
      // 延迟跳转，让用户看到提示
      setTimeout(() => {
        this.redirectAfterLogin();
      }, 800);
      
    } catch (error) {
      console.error('Login failed', error);
      
      this.setData({
        loading: false,
        errorMsg: error.message || '登录失败，请重试'
      });
    }
  },
  
  /**
   * 登录后跳转
   */
  redirectAfterLogin() {
    // 从缓存获取上一个页面
    const prevPage = wx.getStorageSync('prevPage') || '/pages/profile/profile';
    
    console.log('登录成功，准备跳转到：', prevPage);
    
    // 确保loading状态被重置
    this.setData({
      loading: false
    });
    
    // 跳转到用户页面或上一个页面
    wx.reLaunch({
      url: prevPage,
      success: () => {
        console.log('跳转成功');
      },
      fail: (error) => {
        console.error('跳转失败', error);
        // 如果跳转失败，尝试跳转到个人信息页面
        wx.reLaunch({
          url: '/pages/profile/profile',
          fail: (err) => {
            console.error('备用跳转也失败', err);
            // 最后尝试返回首页
            wx.switchTab({
              url: '/pages/index/index'
            });
          }
        });
      }
    });
  }
}); 